/**
 * http://usejsdoc.org/
 * npm install validator
 */
var validator = require('validator');
var logger;


module.exports = function(logger){
	this.logger = logger;


	function isNoLogger(){
		if (logger) {
			return;
		}
		logger = {
			error:function(errorCode, param){
				console.error("ログオブジェクトが未入力です");
			}
		}
	}

	/**
	 * ログチェック
	 * */
	this.isHasLogger = function() {
	    if (logger) {
			return true;
		} else {
		    console.error("ログオブジェクトが未入力です。");
		    return false;
		}
	}

	/**
	 * 必須チェック
	 * */
	this.isEmpty = function(arg, name){
		arg = arg || "";
		arg = arg + "";
		isNoLogger();
		if (validator.isEmpty(arg)) {
			logger.error("RE9008", name);
			return false;
		}
		return true;
	};

	/**
	 * 桁数チェック
	 * */
	this.isLength = function(arg, max, name){
		arg = arg || "";
		arg = arg + "";
		isNoLogger();
		if (!validator.isLength(arg, {"max":max})) {
			logger.error("RE9009",[name,max]);
			return false;
		}
		return true;
	};

	/**
	 * 範囲チェック
	 * */
	this.isInt = function(arg, range, name){
		arg = arg || "";
		arg = arg + "";
		isNoLogger();
		var min = range[0] || 0;
		var max = range[1] || 0;
		if (!validator.isInt(arg, {"min":min,"max":max})) {
			logger.error("RE9010",[name,min,max]);
			return false;
		}
		return true;
	}
}
